As storage and networking resources continue to develop, it has become easier for users to share content with one another. For example, rather than a first user attaching a file to a message and sending the message to a second user over the network, the first user can have a link to the file generated and sent to the second user. The link provides access to the file via a uniform resource locator (URL) which is used to locate the file on a network (e.g., the Internet or World Wide Web). This can help conserve networking, processing, and/or storage resources.
Currently, when a device determines that a link has been activated (e.g., a user clicks on the link contained in a message), the device is configured to call on an application to open the file, so a user can view and/or interact with contents of the file. The application called upon can be a web application accessible via a browser installed on the device, or the application can be a separate client application installed on the device. For instance, upon installation, a client application registers with an operating system of the device so that the client application can be invoked when an analysis of an underlying URL associated with a link reveals a given domain (e.g., a hostname). Stated another way, the client application declares in advance, to the operating system, a desire to open files to be accessed via the given domain. In some specific examples, a first application developed by YOUTUBE can register to open files from the “www.youtube.com” domain. A second application developed by GOOGLE can register to open files from the “docs.google.com” domain. A third application developed by MICROSOFT can register to open files from the “1drv.ms” domain. A fourth application developed by BANK OF AMERICA can register to open files from the “www.bofa.com” domain.
As the number of client applications (apps) available for consumers to download to their personal devices continues to increase, this process creates situations where multiple applications are registered to open a file. For example, an entity may operate a network storage service (e.g., cloud storage service) configured to store and/or backup files in a user account. The entity may also develop and offer for installation multiple different client applications that are capable of opening and interacting with the files stored in the network storage service (e.g., the MICROSOFT WORD app and the MICROSOFT ONEDRIVE app, etc.). Each application registered to open files may have different features available and/or enabled, which allows a device and/or a user to display, manipulate, edit, communicate, and/or otherwise process contents of the file (e.g., file data) in different ways.
In such situations where there are multiple applications registered to open a file, conventional techniques obtain a prioritized list of applications that are authorized to open files accessed via a given domain. The prioritized list ranks the authorized client applications based on priority and may be referred to herein as a ranked list of applications. This ranked list, however, is static in nature. This means that the application that has the highest ranking on the list and that is available to the operating system of the device is always called upon to open a file accessed via the given domain. Stated another way, the operating system fully respects the ranked order of the list and does not implement any functionality to deviate from the ranked order.
These conventional techniques that use the ranked list have shortcomings in that the determined priority of applications fails to consider capabilities of the applications available to the device to open a file. The capabilities can be associated with available and/or enabled features for individual applications. For example, the ranked list does not take into account application versions (e.g., an application identifier on the ranked list identifies the application but does not identify a version of the application). Accordingly, an application may obtain the highest ranked position on the list because of a recently released feature that enables a user to interact with the contents of a file in a new way, thereby providing an improved and optimal experience for the user. However, the user may not have installed the most recent update (i.e., version) to the application. Rather, the device may be executing an older version of the application that does not contain the recently released feature. In this particular scenario, an alternative application that has a lower ranked position on the list, but that may have been updated to the most recent version by the user, may be available for use on the device. This alternative application may include the recently released feature. Consequently, it would be a better experience for the user to have the file opened using the lower ranked application rather than the higher ranked application. However, the operating system's strict adherence to the static order of the ranked list does not allow this, and therefore, a user experience in relation to opening a file and interacting with contents of the file can be frustrated.